//1.导入模块
const fs = require('fs');

//2.导入path模块
const path = require('path');

//3.定义正则表达式
let regStyle = /<style>[\s\S]*<\/style>/g;
let regScript = /<script>[\s\S]*<\/script>/g;

//4.读取文件
fs.readFile(path.join(__dirname,'./yidongduan.html'),'utf8',function (err,succ) { 
    if(err){
        return console.log('读取文件失败！'+err);
    }
    console.log('读取文件成功！');
//4.1使用自定义的方法resolveCss
resolveCss(succ);
resolveScript(succ);
resolveHtml(succ);
 })

 //4.2自定义resolve方法
 function  resolveCss(strStyle) { 
    //4.2.1使用js中的exec方法来使用正则表达式,正则表达式.exec（文字），返回的是一个数组
    let styles = regStyle.exec(strStyle);
    //4.2.2替换字符串中<style></style>标签
    let strcss = styles[0].replace('<style>','').replace('</style>','');
    //4.2.2写入文件中
    fs.writeFile(path.join(__dirname,'./yidongduan.css'),strcss,'utf8',function(err){
        if(err){
            return console.log('写入失败！'+err.message);
        }
        console.log(err);
    })
}

//4.3自定义resolve方法接收script
function resolveScript(strScript){
    // 正则表达式来获取script标签的内容
    let scripts = regScript.exec(strScript);
    //替换标签
    let scri = scripts[0].replace('<script>','').replace('</script>','');
    //写入文件
    fs.writeFile(path.join(__dirname,'./yidongduan.js'),scri,'utf8',function (err) { 
        if(err){
            return console.log('写入失败！'+err);
        }
        console.log('写入成功！');
     })
}

//4.4自定义resolveHtml方法修改内联变外联
function resolveHtml(strHtml){
    //对里面的内容进行替换
    let htmls = strHtml.replace(regStyle,'<link rel="stylesheet" href="./yidongduan.css">').replace(regScript,'<script src="./yidongduan.js"></script>');
    console.log(htmls);
    // 把更改的内容写入新的文件中
    fs.writeFile(path.join(__dirname,'./ydd.html'),htmls,'utf8',function (err) { 
        if(err){
            return console.log('写入文件失败！'+err.message);
        }
        console.log('写入成功！');
     })
}
